import {
  IsNotEmpty,
  IsOptional,
  IsString,
  IsNumber,
  IsDateString,
  MaxLength,
} from 'class-validator';

export class CreateNotifyDto {
  @IsNotEmpty({ message: '通知类型不能为空' })
  @IsString({ message: '通知类型必须是字符串' })
  @MaxLength(255, { message: '通知类型长度不能超过255个字符' })
  type: string;

  @IsNotEmpty({ message: '通知标题不能为空' })
  @IsString({ message: '通知标题必须是字符串' })
  @MaxLength(255, { message: '通知标题长度不能超过255个字符' })
  title: string;

  @IsNotEmpty({ message: '通知内容不能为空' })
  @IsString({ message: '通知内容必须是字符串' })
  @MaxLength(65535, { message: '通知内容长度不能超过65535个字符' })
  content: string;

  @IsNotEmpty({ message: '载荷数据不能为空' })
  @IsString({ message: '载荷数据必须是字符串' })
  @MaxLength(65535, { message: '载荷数据长度不能超过65535个字符' })
  payload: string;

  @IsOptional()
  @IsString({ message: '发送人ID必须是字符串' })
  @MaxLength(36, { message: '发送人ID长度不能超过36个字符' })
  sender_id?: string;

  @IsNotEmpty({ message: '接收人ID不能为空' })
  @IsString({ message: '接收人ID必须是字符串' })
  @MaxLength(36, { message: '接收人ID长度不能超过36个字符' })
  receiver_id: string;

  @IsNotEmpty({ message: '通知状态不能为空' })
  @IsNumber({}, { message: '通知状态必须是数字' })
  status: number;

  @IsOptional()
  @IsNumber({}, { message: '推送状态必须是数字' })
  push_status?: number;

  @IsOptional()
  read_at?: Date;
}
